package com.hoshiicloud.goods.mapper.sku;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hoshiicloud.goods.entity.sku.ExtSku;
import com.hoshiicloud.goods.dto.sku.SkuDTO;
import com.hoshiicloud.goods.param.ListSkuSpuParam;
import com.hoshiicloud.goods.vo.ListSpuSkuVo;
import com.hoshiicloud.goods.vo.StoreAndBaseSkuIdsVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 平台商品表SKU Mapper 接口
 * </p>
 *
 * @author zhangshuhu
 * @since 2019-06-04
 */
public interface ExtSkuMapper extends BaseMapper<ExtSku> {

    /**
     * 查询扩展sku信息及库存和冻结数
     *
     * @param wrapper 查询参数
     * @return List<Map < String, Object>>
     */
    List<SkuDTO> listSKuStockByIds(@Param("ew") Wrapper<ExtSku> wrapper);

    /**
     * 根据spuid获取sku最低价
     *
     * @param wrapper 查询参数
     * @return Map<String, Object>
     */
    Map<String, Object> listSkuMiniPrice(@Param("ew") Wrapper<ExtSku> wrapper);


    List<StoreAndBaseSkuIdsVo> listStoreAndBaseSkuIds(@Param("ew") Wrapper<ExtSku> q);

    /**
     * 查询扩展sku信息及总店库存和冻结数
     *
     * @param queryWrapper 查询参数
     * @return List<Map < String, Object>>
     */
    List<SkuDTO> headOfficeListSKuStockByIds(@Param("ew") QueryWrapper<ExtSku> queryWrapper);

    /**
     * 根据分店的skuId查询出总店的id和skuName
     *
     * @param id id
     * @return Map
     */
    Map<String, Object> selectSkuNameAndParentId(@Param("id") Long id);

    /**
     * 查询出总店的商品SkuId
     *
     * @param maps maps
     * @return 总店的商品SkuId
     */
    Long selectHeadOfficeSkuId(@Param("maps") Map<String, Object> maps);





    Page<ListSpuSkuVo> getBranchStoreCanAddSkuPage(Page<ListSpuSkuVo> page, @Param("param") ListSkuSpuParam param);

}
